package setting

import (
	"time"
)

// 服务端配置
type ServerSetting struct {
	RunMode      string        // 运行模式
	HttpPort     string        // 端口
	ReadTimeout  time.Duration // 读超时
	WriteTimeout time.Duration // 写超时
}

// 应用配置
type AppSetting struct {
	DefaultPageSize int    // 默认的每页的条数数
	MaxPageSize     int    // 最大的每页的条数数
	LogSavePath     string // 日志路径
	LogFileName     string // 文件名称
	LogFileExt      string // 文件后缀
	RootDir         string // 项目所在的目录
}

// 数据库配置
type DatabaseSetting struct {
	DBType       string // 数据库类型
	Username     string // 数据库用户
	Password     string // 数据库密码
	Host         string // 地址 + 端口
	DBName       string // 数据库名称
	TablePrefix  string // 表前缀
	Charset      string // 编码
	ParseTime    bool   // 是否自动解析为时间
	MaxIdleConns int    // 闲置连接数
	MaxOpenConns int    // 最大连接数
}

type EmailSetting struct {
	Host     string
	Port     int
	UserName string
	Password string
	IsSSL    bool
	From     string
	To       []string
}

// minio 配置
type MinioSetting struct {
	Port            int // 端口
	Host            string
	AccessKeyID     string
	SecretAccessKey string
	UseSSL          bool
	BucketName      string
	Location        string
	PartSize        uint64
}

// 读取配置
func (s *Setting) ReadSection(k string, v interface{}) error {
	// 根据key获取值，将值放入结构体中
	if err := s.vp.UnmarshalKey(k, v); err != nil {
		return err
	}
	return nil
}
